home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 52
/
Amiga Format AFCD52 (Issue 136, May 2000).iso
/
-serious-
/
programming
/
basic
/
mildred
/
mildred.lha
/
index.html.txt
< prev
Wrap
Text File
|
2000-03-05
|
21KB
|
389 lines
HTTX 1.5
Welcome to the
programmer support pages for
A chunky-graphics library for the Blitz Basic programming language
Written by Paul West in 1998-2000.
Copyright (c) 1998-2000 Paul Jonathan West
Last updated Thursday 3rd March 2000
Intro: Mildred is a 8-bit-chunky graphics library for the programming
language called BlitzBasic2 on the Amiga computer. It is written entirely in
assembly language and offers a large variety of graphics-related capabilities
which are accessible from your own BlitzBasic2 programs via tokens. Mildred
offers handling of chunky bitmaps and shapes and has its own queue system to
help with many engine's into which it may be applied. It also has a selection
of particle animation and rendering routines, zooms, and a fast
chunky-to-planar conversion system. There are various blitting modes to
choose from, individually selectable for a range of scroll, blockscroll and
blit routines, allowing graphics handling in colour, as well as
transparencies and other effects. There are various housekeeping routines to
handle the objects and also a range of drawing routines for points, lines and
boxes, also in various blit modes. Plus there are a selection of fast tile
routines for map-type engines. The design of the interface between the
programmer and the library is based on the existing design of the original
BlitzBasic2 graphics tokens, which makes for an easier integration and
changeover. Perhaps most importantly of all, the output from Mildred is
easily retargetabble between the standard AGA display hardware and a graphics
card (which supports 8-bit modes).
Disclaimer: I make no promises as to the reliability or suitability of
Mildred or any of the example programs, accuracy of documentation or absense
of bugs. I cannot be held liable for any damage that may come about to
yourself, others, nor meterial or intellectual property as a result of
exposure to and use of the library and its supporting information. Use of
Mildred is entirely at your own risk and the author will not be held
accountable for any confusions, mishaps, mistakes, losses or damages. I can
also make no promises about the speed or performance of any of the routines
available and you should be aware that working with chunky-format graphics
requires a certain amount of cpu power to be productive (e.g. 68030/50MHz or
higher). Yet I, Paul Jonathan West, would like to offer at least the warm
encouragement that Mildred has undergone extensive testing both via exposure
to the public and as a result of my own checking and perfecting. So far no
bugs have been reported since the release of Mildred v1.50 in May 1999.
Please note also that the example/demo programs available below are there to
help you get used to coding using Mildred and will work on most Amiga's, but
in some cases there are problems. This is not necessarily representative of
the reliability of the library itself, but of poorly coded examples (on my
part mostly). I apologise for this and hope that nevertheless you will have
few problems becoming accustomed to using Mildred to open new avenues in your
programming.
Notice: Mildred is designed, written and created by Paul West. Main
development occurred from October 1998 till May 1999 mostly full-time. The
sourcecode, its copyright and freedom to make alterations, modifications and
additions has been reclaimed from Pagan Games, as well as full rights of
distribution as I see fit. This has no effect on public use of the compiled
library in any of your projects, such as can be downloaded in the archives
below. There is no further work planned by the author at this time, but
further work is now a possibility. All of the files and information available
below for download are free for public use and the author will willingly
accept payments for use of Mildred in your products if you are feeling
generous! Please enjoy this great library and good luck with your projects.
Mildred Stats: 863,325 bytes of assembler code spanning 27,176 lines, 219
individual tokens with the functionality of 407 via syntax variations,
sourcecode commented on 12,440 lines, full runtime errorchecking routines
throughout, 51 version updates comprising bugfixes, additional code and
optimisations since the first public release, full AmigaGuide and Html
documentation covering every token and variation of syntax, 4 months full
time and 3 months part time work, compiles to 138,104 bytes in 115 seconds on
my 68040/25.
Click HERE for library history, or HERE for a list of commands.
(65k) Mildred.lha : This is the actual Mildred library, version 1.51.
(47k) MildredGuide.lha : This is an archive containing full documentation
covering ALL commands in Mildred for version 1.51, in AmigaGuide format.
Alternatively you can click HERE to view the text on-line.
(124k) MildredHtml.lha : Html version of the MildredGuide.lha amigaguide
v1.51 documentation. Alternatively, you can click HERE to read the Html
documentation online.
(2k) Internal.lha : This is a copy of the internal data area of Mildred
v1.47. This may be needed if you are writing your own libraries and wish to
tap in to Mildred's data area (which can also be achieved using
MMildredBase). Alternatively you can click HERE to view it online.
(16k) MiniMildred.lha : This is the abridged MiniMildred library, version
1.19, the chunky-to-planar subsystem of the main Mildred system. (Bugfixed)
(36k) OldHtml.lha : This is an archive containing the OLD on-line html
documenation for Mildred that covered all of the chunky-to-planar-related
commands. There are no pictures included.
Notice: You can now download the sourcecode to Mildred. It is free of charges
and obligations. I, Paul Jonathan West, retain copyright ownership of the
library as it stands and is presented at this website, but you may freely
alter, distribute, modify, enhance, optimise, reform and use the source in
any way you see fit in any of your projects, experiments and products. I do
not expect a fee for this privelege but would welcome any small donations and
can be contacted by email.
(105k) MildredSourceAsc.lha : Full sourcecode to the Mildred library v1.51,
saved in ASCII format, or click HERE to read the source online.
(105k) MildredSourceBB2.lha : Full sourcecode to the Mildred library v1.51,
saved in BlitzBasic2 format.
(6k) MildredTests.lha : A few small test programs that I used at times to
check if various tokens were working as they should.
(10k) MiniMildredSourceAsc.lha : Full sourcecode to the MiniMildred library,
saved in ASCII format.
(10k) MiniMildredSourceBB2.lha : Full sourcecode to the MiniMildred library,
saved in BlitzBasic2 format.
Notice: To follow are various archives of demo programs and related material
that may help you in your exploration of using Mildred in your own software.
Not all of it works at it should for everyone all the time but I hope it will
offer you some useful introduction to various aspects of programming with
Mildred.
(165k) DissolveDemo.lha : This is a demonstration of how to use
MPictureDissolveIn. Two example effects are included but the possible effects
are limited only by your imagination. Updated to work with v1.44.
(19k) ILBMviewer.lha : This is a demonstration mainly of the c2p system and
its interlacing features. It allows you to load in an ILBM picture and to
display it in the form of a superbitmap. This also includes some old code for
an ILBM-to-Chunky loader, and a screenmode-requester routine with a callback
hook. Updated to work with v1.45.
(3k) MildredStructs.txt : Here are the structures for Mildred's objects. This
is not an archive.
(9k) BounceDemo.lha : This is a demo for bouncing objects around the screen.
It uses MQSBlit to put objects behind the bitmap's stencil and into the queue
and also performs an unqueue from a store-bitmap. Updated to work with v1.43.
(15k) FDsExample1.lha : This is an example program demonstrating the use of
Mildred to produce a cool sinewave effect on a logo, written by Mikkel Lokke.
(15k) MScreen.lha : An example of how to open a screen that can be
retargetted to graphics-card or to AGA, in a way that works easily with
Mildred and allows the use of MBlockScroll for fast graphics-card output in
8-bit chunky. Updated for v1.45.
(3k) FDsExample2.lha : Another example by Mikkel Lokke, demonstrating how to
safely cludge a shape onto previously created shape data.
(23k) CardTest.lha : This is a couple of programs (Comparison and
ILBMviewer2) that I was fiddling with when experimenting with graphics-card
output. Comparison does a speed-test between using WritePixelArray8 and
MBlockScroll for output, and ILBMviewer2 is a reworking of the old ILBMviewer
program but with different graphics-card output (using MBlockScroll). The
comparison program is also a combination of ILBMviewer and the Bounce demo.
Updated to work with v1.45.
(258k) Remap.lha : This is a demonstration of the MReMapUsingShape command in
combination with a remapping table. Three precalculated tables are included
for 50% merge, add, and subtract or alternatively you can compute your own
(see sourcecode). Note that a generated table only works for the palette it
was computed with. This demo also has Mildred-based AGA and GFX-card support.
You will need Mildred v1.42 for this demo to work free of bugs, although it
will work with earlier versions. Now updated for v1.43 and using MQblit with
MReMapMode instead of MReMapUsingShape (which has been deleted from the
library). Updated for v1.45.
(5k) GFXlib.lha : This is an updated version of the
blitzlibs:amigalibs/graphics.library files for o/s 3.1, which provides the
new function WriteChunkyPixels_() which can be useful for graphics-card
output. Note that the more recent Mildred demo's are written using this
library so if you get tokenisation problems there (ie the wrong tokens come
up) then you might like to try this update (or try loading in the ascii
sourcecode), although it will only be fully accessible if you have o/s 3.1.
(155k) Bounce9.lha : This is a quick new demo of the `remap mode' blits that
were introduced in Mildred v1.27. Two tables have been precalculated showing
50% and 20% merge. The sourcecode contains the necessary routines to generate
further different tables (it takes a while!) Now updated for v1.45.
(73k) FDsExample3.lha : Welcome to a superbitmap scroll demo by, another fine
effort by Flame Duck himself, Mikkel Lokke. This demonstrates how you can
scroll around a superbitmap. Updated for v1.43.
(3k) FDsExample4.lha : A nice little exploding firework effect using Mildred,
by Mikkel Lokke. Updated for v1.43.
(213k) ScrollDemo.lha : This is a demonstration of various types of `scroll'
commands in Mildred. The featured effect from top-left are scroll,
blockscroll, motionblur using 50% merge, blacksmoke using subtract, stencil
in colour, scroll from same bitmap, 50% transparency, scroll behind stencil
including x and y flips, scroll from same bitmap and y-flipped copy of the
50% merge. See the effects for yourself. The two necessary remap tables are
included, along with the iff pic that is needed (the tables are calculated
based on its palette). Updated for v1.45.
(3k) PixelExplosion.lha : This is a modification of Mikkel's pixel explosion
program (FDsExample4.lha) with much improved speed and performance. There are
15000 pixels exploding! The enhancement has been done by Sami Naatanen, with
thanks to Flame Duck for the original program. Updated for v1.43.
(47k) MScreen2.lha : This is an better example of how to do RTG in your
Mildred programs. You will need o/s v3.1 graphics.library (see above) in
order to load the source properly, but ascii is included (as is exe). You
will need to put cybergfx.res into blitzlibs: (included). The demo will make
use of cybergraphics library if you have it (or picasso96), and offers a
selection of output methods (selectable with variables). A simple bouncing
line routine is done to show that the output works. The demo defaults to
custom Mildred output and triple buffering. See below for the
cybergraphics.library1 file if you haven't already installed one yourself.
Updated for v1.45.
(3k) PixelExplosion2.lha : This is a further modification by myself to the
pixel explosion routine that Mikkel originally wrote, which was later
modified by Sami. I have converted the program to use the new particle
animation routines, and is now at least twice as fast, or many times faster
on lower cpu's. Now updated for v1.43.
(10k) GravityExample.lha : A fun little demo of a Gravity-Force style game
written by Sami Nataanen. This shows some simple use of some particle
animation routines and output from a superbitmap, as well as a nifty little
gravity effect, thrust, and bullets. Updated for v1.43.
(2k) CyberGFX.lha : This is the cybergraphics.library1 library file which you
can/should put into your blitzlibs:amigalibs/ directory (and remake your
deflibs) to provide the standard set of tokens for the cybergraphics library.
Also included is a .res file which you should put into blitzlibs:, converted
by Daniel Allsopp.
(73k) DispDemo.lha : A superbitmap scroll demo by Andreas Hkansson, similar
to FDExample3, but showing you how to simply implement a split-screen display
such as for a two-player game. Updated for v1.43.
(7k) HStarDemo.lha : Here is a nice little horizontal starfield with a bendy
logo effect, written mostly by Bruce Henderson.
(7k) Starfield2.lha : This is a modification of HStarDemo.lha demonstrating
how to use MScroll with a custom-offsets list so that the bendy logo effect
can be achieved with only one call to MScroll rather than seperate calls for
each line. The sinewave had to be put into a lookup table for this purpose,
so overall the effect is faster (without the WaitTOF).
(20k) SineExample.lha : Here are two demos of using a custom-offsets list to
produce the sinewave logo effect as originally written by Mikkel Lokke.
Rather than blit each line seperately the lookup table is used to offset each
line as the scroll progresses. The overall result is a much smoother effect.
Also a second demo is included which attemps to do a quick verticle sinewave
simultaneously (although using a seperate call for each column) so produce a
liquid sort of effect.
(84k) ZoomDemo.lha : Here are two demos featuring examples of the new zoom
routines as introduced in Midred v1.47. The first is a simple zoom of an
image and the second shows how to use a custom-offsets list to modify the
zoom effect on each line (with which much fun can be had!). Updated for
v1.48.
(84k) DeResDemo.lha : Here are two demos featuring examples of the new de-res
effect that has been added to the zoom routines in Mildred v1.48. The first
is a simple de-res of an image and the second shows how to use the
custom-offsets list to modify the de-res effect on each line.
(34k) CNKI.lha : Here is a proposed file format for storing chunky shapes
(which could also be applied to chunky bitmaps), designed by Chris Deeney. It
is able to store single shapes or `anim shapes', and a converter program is
included to convert IFF brush and IFF animbrush files into CNKI files. Also
supplied are some blitz routines to handle the CNKI files including LoadCNK{}
for loading in the CNKI files to your program. The CNKI files can also have
some compression.
(417k) SplitTests.lha : Four examples of doing splitscreens using Mildred.
These examples are released `as is' and haven't really been coded for an
audience, but you may find them an interesting example of various kinds of
split-screens possible using Mildred. The examples use a superbitmap source
with multiple views on it, including 4-way split, diagonal split and a single
view with zoom (use mouse buttons). These programs were simple experiments in
splitscreen methods and how many objects could be rendered/handled at the
same time.
(309k) SlideShow.lha : This is part of a programmed slideshow-type demo which
I began work on. It shows an example of using MZoom as well as two examples
of picture dissolving. Again this sourcecode wasn't intended to have an
audience but you may find it interesting. It was targetted at an 040/25 so
will run slow on anything less.
(42k) LandTest1.lha : (50k) LandTest2.lha : (98k) LandTest3.lha : (86k)
LandTest4.lha : (101k) LandTest5.lha : (279k) LandTest6.lha : (163k)
LandTest7.lha :
LandTest is the beginnings of a game engine, intened to be a cross between
Defender and Revenge of the mutant camels. It starts off in LandTest1.lha as
my first experiments with a parallax ground using Mildred. In LandTest3.lha
things have got much more sophisicated and by LandTest6.lha and LandTest7.lha
most of the main features are in place - for as far I'd got with it. Archive
6 has a selection of alternative executables, and archive 7 also has an
executable. Note that Mildred is used for all of the graphics rendering and
that the screen comprises a full graphical backdrop (128 shared colours) and
256-colour objects (using 128 colours probably). The sky was due to
eventually get several parallax layers as well. Control is via the joystick.
In some of the versions, deacceleration is switched off. This was due only to
my standing back for hours on end admiring my handywork in motion! These
files, at least, show a good example using a scroll with a custom offsets
table to produce a parallax ground effect in a single blit. Also some
particle routines are used for animation, and realtime zoomed bobs for the
background map. Note that earlier archives output to AGA only, and none of
these files were intended for an audience. If there is any project that I
might continue with someday it could be this one. LandTest was designed to
run at 25fps on an 040/25 and makes strong use of 040 optimisations.
(160k) LandMap.lha : LandMap accompanies the LandTest programs above. It is
used to convert an ordinary strip of `land' graphic into a fake perspective,
ready to be used for the parallax ground image in the LandTest examples. The
operation of the parallax in the LandTest programs is dependent upon the
output from this program. Some degree of palette remapping may also be
involved as, in later versions, sky and land images shared the same 128
colour palette. Note that these programs also were not designed with an
audience in mind.
(40k) RotateTest.lha : This is a little experiment I did in rotating a bitmap
realtime. There are two versions, the latter being slightly faster due to
using Mildred's particle drawing routines instead of individual plots. You
can use the mouse buttons to zoom in and out because it zooms at the same
time as rotating. This was really my first exploration into rotation and I
would've liked to have offered various blits with rotation incorporated, but
on trying experimenting with the idea in assembler I found there was a major
shortage of registers spare and therefore any implementation would be less
than optimum speed, especially in different blit modes (and it would require
the infamouse DIVU command which is very slow). This routine outputs to AGA
only and the source is not designed for an audience.
(34k) PixelExplosion4.lha : This is a revision of the previous Pixel
Explosion examples, simply to test using the particle routines in `add' mode.
The resulting effect is that the explosion starts off `bright' when the
particles are condensed and `cools' as they disperse.
(121k) SnowDemo.lha : This is a demo of how you might do a snow effect using
particles in Mildred. The particles simply have random positions, a base
movement direction is added to them, and then a random variation direction is
added to them. When they go off the end of the buffer they're wrapped back to
the top. Note that this example wasn't designed for an audience, but enjoy.
(114k) RainDemo.lha : This is similar to the SnowDemo above, except that in
this example the particles are clumped together and moved together in unisons
of 4 to create the impression of a streak of rain rather than individual
pixels. Also the movement variance is adjusted to give a less snow-blowy
effect. Note that this example wasn't designed for an audience either, but
enjoy.
The team of Pagan Games were using Mildred in Dafel:Bloodline. This project
was the womb from which Mildred sprang.
Mildred is also being used in Operation:CounterStrike from BlueBlack Solution
by Daniel Allsopp.
Rui "Grim" Calvalho of Dark Dreams Designs is using Mildred in his new
Bubbles game.
Paul Burkey is using MiniMildred in Foundation.
Visitors:
A Member of the Blitz WebRing